[アップデート] AWS CodePipeline でテンプレートを使って新規パイプラインを簡単に作成出来るようになりました
いわさです。
今朝のアップデートで AWS CodePipeline でパイプライン作成時に新しい方法が提供されるようになりました。
事前に提供されたテンプレートを使って新規パイプラインを作成出来るようになっています。
テンプレートを使うと、ユースケースに応じて個別にステップを構成しなくても事前定義されたステップが自動で設定されます。
実際に使ってみましたので使い方や注意点を解説したいと思います。
新規パイプラインをテンプレートから作成出来るように
東京リージョンで確認しています。
使い方の流れですが、新規パイプラインの作成時に「Create pipeline from template」という開始メニューが追加されています。
開始方法ページだと次のボタンです。
パイプライン一覧画面だと次のボタンです。
そうすると、従来とは違うパイプライン作成画面に遷移します。
最初のステップはソースプロバイダー選択です。ここは従来と同じ感じですね。
次のステップが完全に新しいものですね。
テンプレートを選択する画面です。
カテゴリとして Deployment、Continuous Integration、Automation の 3 つがあります。
カテゴリを選択するとそれぞれ事前に AWS が準備してくれているテンプレートを選択することが出来ます。
こちらは Deployment カテゴリです。
次は Continuous Integration カテゴリです。
こちらは Automation カテゴリです。
テンプレートを選択すると、最後のステップでテンプレートごとの個別パラメータせっていを行います。
例えば CloudFormation をデプロイするパイプラインテンプレートの場合であれば、テンプレートファイル名を指定したりします。
なお、これらのテンプレートは AWS から提供されているものを使う形となり、カスタムテンプレートを作成する機能などは本日時点ではありません。
CloudFormation デプロイしてみる
ECR へのコンテナデプロイや、CloudFormation デプロイあたりはベースファイル用意するだけで良いので検証しやすそうです。
今回は CloudFormation をデプロイする「Deploy to CloudFormation」を試してみます。
まずはソース設定です。
上記のスクリーンショットと少し違っていますが、ソースプロバイダーは GitHub で CodeConnection をすでに作成済みです。
リポジトリは以下のものを使います。ALB や EC2 を含む CloudFormation テンプレートを管理しています。
「Deploy to CloudFormation」の設定ですが、ステック名とテンプレートパスを指定します。
あとは CloudFormation が使う IAM ポリシーの設定も行います。以下はデフォルトのポリシーから少し修正していまして、後述しますがデフォルトのままだと IAM ポリシーの問題でパイプライン作成に失敗します。
これで作成すると、まず CloudFormation を使って CodePipeline がデプロイされます。
このテンプレート機能自体は CloudFormation スタックとしてデプロイされます。さらにデプロイされたパイプラインの中で GitHub からソースコードを取得してデプロイするという感じになります。
ただ、本日時点で CloudFormation テンプレートはほとんどの場合はパイプライン実行に失敗すると思います。
パラメータ設定を追加で行う
パイプライン失敗の理由ですが、CloudFormation デプロイ設定ではパラメータを指定する箇所がありませんでした。
なのでデフォルトパラメータでデプロイされてしまい、必須パラメータを含むテンプレートの場合は失敗します。
本日時点ではデプロイされたパイプラインのステップを編集して、パラメータの上書きを行ってやる必要がありそうです。
私のテンプレートではキーペア名を指定する必要があったのですが、それを追加してやります。
デプロイに成功しました。
IAM ポリシーの編集も必要
「Deploy to CloudFormation」テンプレートの場合は CloudFormation が使う IAM ポリシーを設定する必要があるのですが、デフォルトだと JSON として不正な形式になっています。
そのためそのままパウプライン作成を行おうとすると作成に失敗します。
CloudFormationResourcePermissions
のポリシーはアクション部分の置き換えが必要です。
今回検証用のため全アクションを許可してしまいましたが、CloudFormation デプロイに必要なアクションを指定すると良いですね。
さいごに
本日 AWS CodePipeline でテンプレートを使って新規パイプラインを簡単に作成出来るようになったので、CloudFormation 用テンプレートを試しに使ってみました。
修正される気はしますが本日時点だとデフォルトで失敗するケースがあったので注意したいところです。
とはいえ1からステップを構築するよりは格段に楽になった気がします。
CloudFormation はもともとデプロイコンポーネントが用意されているので対して恩恵はない気もしますが、アプリケーションのビルドやテストなどに関してはかなり楽なのではないでしょうか。
.NET とかが無かったので、今後対応するビルドエンジンが増えると良いなと思いました!